package cn.kgc.websocket;

import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.ChannelInboundHandlerAdapter;
import io.netty.handler.timeout.IdleState;
import io.netty.handler.timeout.IdleStateEvent;

public class HearBeatHandler extends ChannelInboundHandlerAdapter {
    @Override
    public void userEventTriggered(ChannelHandlerContext ctx, Object evt) throws Exception {
        //如果channel触发的事件是空闲状态的事件
        if (evt instanceof IdleStateEvent) {
            IdleStateEvent event = (IdleStateEvent) evt;
            //如果空闲状态的事件是读空闲
            if (event.state() == IdleState.READER_IDLE) {
                //如果channel 超过规定时间60S写空闲 需要对channel做一些额外操作
            } else if (event.state() == IdleState.WRITER_IDLE) {
                //如果channel 超过规定时间60S写空闲 需要对channel做一些额外操作
            } else {
                //如果channel 超过规定时间60S读写空闲 需要对channel做一些额外操作
            }
            //关闭channel 会自动触发Netty的生命周期函数：handlerRemoved
            ctx.channel().close();
        }
    }
}
